﻿using System;

namespace Microsoft.Xna.Framework.Graphics
{
    /// <summary>
	/// Defines a mechanism for retrieving GraphicsDevice objects.
    /// </summary>
    public interface IGraphicsDeviceService
    {
		/// <summary>
		/// Retrieves a graphcs device.
		/// </summary>
        GraphicsDevice GraphicsDevice { get; }

		/// <summary>
		/// The event that occurs when a graphics device is created.
		/// </summary>
        event EventHandler<EventArgs> DeviceCreated;

		/// <summary>
		/// The event that occurs when a graphics device is disposing.
		/// </summary>
        event EventHandler<EventArgs> DeviceDisposing;

		/// <summary>
		/// The event that occurs when a graphics device is reset.
		/// </summary>
        event EventHandler<EventArgs> DeviceReset;

		/// <summary>
		/// The event that occurs when a graphics device is in the process of resetting.
		/// </summary>
        event EventHandler<EventArgs> DeviceResetting;
    }
}
